package main

import (
	"fmt"
	"strconv"
)

/*
作业：
定义一些初始值：
username=“root”
passwd=“123456”
balance=1000

实现一个简易的atm存取系统
1、登陆成功才能进入系统

	进入系统选择：
	1、存钱
	2、取钱--注意取钱的金额不能大于它本身的金额
	3、查询余额
	4、退出整个系统

2、登陆失败有三次重试机会

把功能封装成函数
*/

// 用户已设定的初始值
var user_name string = "root"     //用户名
var user_passwd string = "123456" //用户密码
var saving float32 = 1000         //用户存款
var quit int = 0                  //退出系统标志位
func main() {
	i := 0
	for ; i < 3; i++ {
		if !check() {
			fmt.Println("输入的用户名或者密码错误，请重新输入")
		} else {
			break
		}
	}
	if i == 3 { //登录账户失败
		fmt.Println("输入错误密码或用户名次数过多，账户已冻结")
	} else { //成功登录账户，进入ATM系统
		fmt.Println("登陆成功")
		for true {
			select_func()
			if quit == 1 {
				fmt.Println("结束服务，再见！")
				break
			}
		}
	}
}

// 接受键盘输入并检查密码和用户名是否正确
func check() bool {
	var name, passwd string
	fmt.Println("请输入你的用户名：")
	fmt.Scanln(&name)
	fmt.Println("请输入你的密码：")
	fmt.Scanln(&passwd)
	if name == user_name && passwd == user_passwd {
		return true
	}
	return false
}

// 存钱功能
func deposit() {
	var str1 string
	var money float32
	fmt.Println("请输入你要存的数目：")
	fmt.Scanln(&str1)
	v, err := strconv.ParseFloat(str1, 32)
	if err != nil {
		fmt.Println("输入有误，操作失败")
	} else {
		money = float32(v)
		saving += money
		fmt.Println("操作完成")

	}

}

// 取钱功能
func draw() {
	var str1 string
	var money float32
	fmt.Println("请输入你要取的数目：")
	fmt.Scanln(&str1)
	v, err := strconv.ParseFloat(str1, 32)
	if err != nil {
		fmt.Println("输入有误，操作失败")
	} else {
		money = float32(v)
		if money > saving {
			fmt.Println("余额不足")
		} else {
			saving -= money
			fmt.Println("操作完成")
		}
	}
}

// 查询余额
func check_saving() {
	fmt.Println("你的账户余额为：", saving)
}

// 功能选择
func select_func() {
	var choice int = 0 //功能选择位,初始化为0
	fmt.Println("选择你要的服务对应的数字：1、存钱 2、取钱 3、查询余额 4、退出系统")
	fmt.Scanln(&choice)
	switch choice {
	case 1:
		deposit()
		break
	case 2:
		draw()
		break
	case 3:
		check_saving()
		break
	case 4:
		quit = 1
		break
	default:
		fmt.Println("输入错误")
	}
}
